package com.by.controller;

import com.by.pojo.Person;
import com.by.service.PersonService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description: 控制层，接受请求并控制跳转的页面或者返回数据（json）
 * @Param: * @param null
 * @return:
 * @Author: GP
 * @Date: 2024/1/17
 */

//@Controller //作用：标识一个当前类是一个controller
@RestController //@Controller+@ResponseBody
@RequestMapping("/person") //窄化路径
public class PersonController {

    //高耦合：如果修改UserService或删除UserService,要修改UserController的源代码,否则会报错
    @Autowired  //作用：从袋子（容器）里把new UserPersonServiceImpl拿出来，并赋值给PersonService
    private PersonService personService;

    //请求的url
    //这个接口是案例，写死的数据
    @RequestMapping("/getUserById")  //作用：接受请求
    //@ResponseBody //作用，把返回结果转成json串
    public String getUserById(Integer id) { //211314--->id
        System.out.println("我运行啦，啦啦啦啦啦");
        return "狗攀心里都是晶宝宝，我们的标识符" + id;   //return 的结果默认是跳转到一个页面
    }

    @RequestMapping("/getPersonById") //作用：接受请求
    //@ResponseBody   //作用，把返回结果转成json串
    public Person getPersonById(Integer id) {
        return this.personService.getPersonById(id);
    }


    @RequestMapping("/delPersonById")
    //@ResponseBody   //作用，把返回结果转成json串
    public String delPersonById(Integer id) {
        personService.delPersonById(id);
        return "已删除";
    }


    @RequestMapping("/addPerson")
    public String addPerson(Person person) { //少量参数可以直接接收，多个参数可以用对象接收
        System.out.println(person.getId() + " " + person.getName() + " " + person.getAge() + " " + person.getRole() + " " + person.getTrait());
        personService.addPerson(person);
        return "已添加";
    }


    @RequestMapping("/editPerson")
    public String editPerson(Person person) {
        personService.editPerson(person);
        return "已修改";
    }
}
